package com.sun.umbrella.remote;

import com.sun.umbrella.remote.entity.FilterChains;
import com.sun.umbrella.session.SessionContext;
import org.apache.shiro.session.Session;

import java.io.Serializable;
import java.util.List;


/**
 * @author Jay
 * @version v1.0
 * @description session管理
 * @date 2017-11-30 15:46
 */
public interface RemoteService {


    /**
     * 获取 web session
     *
     * @param sessionId
     * @return
     */
    Session getSession(Serializable sessionId);


    /**
     * 创建 web session
     *
     * @param session
     * @return
     */
    Serializable createSession(Session session);


    /**
     * 更新 web session
     *
     * @param session
     */
    void updateSession(Session session);


    /**
     * 删除 web session
     *
     * @param session
     */
    void deleteSession(Session session);


    /**
     * 根据principal获取业务session信息
     *
     * @param principal
     * @return
     */
    SessionContext getSessionContext(String principal);


    /**
     * 退出登录
     *
     * @param principal
     * @return
     */
    Boolean logout(String principal);


    /**
     * 根据sysId查询到对应的过滤器资源
     *
     * @param sysId
     * @return
     */
    List<FilterChains> getFilterChainsBySysId(Integer sysId);


    /**
     * 是否需要重新加载过滤器
     *
     * @param sysId
     * @return
     */
    Boolean isNeedReload(Integer sysId);


    /**
     * 修改 是否需要重新加载过滤器 的状态
     *
     * @param sysId
     * @param reloadStatus 0：不需要重新加载 1：需要重新加载
     * @return
     */
    Boolean resetReloadFilterStatus(Integer sysId, Integer reloadStatus);

}
